package pe.com.bbva.ge.negocio;

import java.util.List;

import pe.com.bbva.ge.domain.base.Identificador;
import pe.com.bbva.ge.domain.configuracion.Posicion;
import pe.com.bbva.ge.domain.configuracion.Valor;
import pe.com.bbva.ge.domain.solicitud.Destino;
import pe.com.bbva.ge.domain.solicitud.DetalleCasetera;
import pe.com.bbva.ge.domain.solicitud.DetalleDenominacion;
import pe.com.bbva.ge.domain.solicitud.DetalleMaterial;
import pe.com.bbva.ge.domain.solicitud.DetalleMoneda;
import pe.com.bbva.ge.domain.solicitud.DetalleOtroServicio;
import pe.com.bbva.ge.domain.solicitud.Remito;
import pe.com.bbva.ge.domain.solicitud.Solicitud;
import pe.com.bbva.ge.utileria.form.BandejaTrabajoForm;
import pe.com.bbva.ge.domain.solicitud.TipoSolicitud;

public interface SolicitudNegocio extends CrudNegocio {

	List<Solicitud> obtenerSolicitudesPendientes(BandejaTrabajoForm bandejaTrabajoForm);
	List<Destino> obtenerDestinos(Solicitud solicitud);
	List<DetalleMoneda> obtenerDetalleMonedas(Destino destino);
	DetalleMoneda obtenerDetalleMoneda(Destino destino, Valor moneda);
	List<DetalleDenominacion> obtenerDetalleDenominaciones(DetalleMoneda detalleMoneda);
	List<DetalleCasetera> obtenerDetalleCasetera(Destino destino);
	DetalleMoneda obtenerDetalleMonedaXIdMoneda(Destino destino, Valor moneda);
	List<Remito> obtenerRemitos(DetalleMoneda detalleMoneda);
	List<DetalleMaterial> obtenerDetalleMateriales(Destino destino);
	List<DetalleOtroServicio> obtenerDetalleOtroServicios(Destino destino);
	boolean primerPedido(TipoSolicitud tipoSolicitud,Posicion posicionDestino);
	void crearSolicitud(Solicitud solicitud);
	void actualizarSolicitud(Solicitud solicitud);
}
